package com.sicheng.蓝桥.国赛准备;

import java.util.Scanner;

/**
 * @author zsc
 * @version 1.0
 * @date 2022/5/20 23:00
 */
public class 和与乘积 {
    /**
     * 给定一个数列A=(a1,a2...,an)
     * )
     * 问有多少个区间[L,R]满足区间内元素的乘积等于他们的和
     * 。
     * <p>
     * 【输入格式】
     * 输入第一行包含一个整数n，表示数列的长度。第二行包含n个整数，依次表示数列中的数ai
     * 【输出格式】
     * 输出仅一行，包含一个整数表示满足如上条件的区间的个数。
     * 【样例输入】
     * 4
     * 1 3 2 2
     * 【样例输出】
     * 6
     * 【样例解释】
     * 符合条件的区间为[1,1],[1,3],[2,2],[3,3],[3,4],[4,4]。
     * 【评测用例规模与约定】
     */

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] nums = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            nums[i] = scanner.nextInt();
        }
        long count = 0;
        long[][] dp = new long[n + 1][2];
        dp[0][1] = 1;

        for (int j = 1; j <= n; j++) {
            dp[j][0] = dp[j - 1][0] + nums[j];
            dp[j][1] = dp[j - 1][1] * nums[j];
            if (dp[j][0] == dp[j][1]) {
                count++;
            }
        }

        //并不是dp做法，利用前缀和思想
        for (int i = 2; i <= n; i++) {
            for (int j = i; j <= n; j++) {
                if (dp[j][0] - dp[i - 1][0]==dp[j][1] / dp[i - 1][1]) {
                    count++;
                }
            }
        }

        System.out.println(count);
    }
}
